import dayjs from 'dayjs'
import Schema from 'validate'
const visitInfo = new Schema(
  {
    // 房屋id
    houseId: {
      type: String, // 类型
      required: true, // 非空
      message: '到访房屋不能为空', // 提示信息
    },
    // 姓名
    name: {
      type: String, // 类型
      required: true, // 非空
      message: '姓名不能为空', // 提示信息
    },
    // 手机号码
    mobile: {
      type: String, // 类型
      match: /^1[3-9]\d{9}$/, // 手机号码
      message: '手机不合法', // 提示信息
    },
    // 预约日期
    visitDate: {
      type: String, // 类型
      required: true, // 非空
      message: '预约日期不能为空', // 提示信息
    },
  },
  { strip: false } // 解决 验证对象后，数据丢失属性的问题！！
)
Page({
  data: {
    // 让日期组件显示当下事件 要求时间戳
    currentDate: Date.now(),
    // 可选最大的日期 当下三天后
    // maxDate: Date.now() + 1000 * 60 * 60 * 24 * 3,
    maxDate: +dayjs(Date.now()).add(3, 'd'),
    dateLayerVisible: false,
    houseLayerVisible: false,
    // 房屋列表
    houseList: [],
    // 房屋id
    houseId: '',
    // 房屋名称
    houseInfo: '',
    // 姓名
    name: '',
    // 性别 0 女 1 男
    gender: 1,
    // 手机号码
    mobile: '',
    // 访客日期 - 限制 今天开始 往后推3天
    visitDate: '',
  },
  onLoad() {
    this.getHouseList()
  },

  // 获取真实 维修房屋 列表
  async getHouseList() {
    const res = await wx.http({ url: '/house' })
    // console.log(res)
    this.setData({
      houseList: res.data,
    })
  },
  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },
  goPassport() {
    wx.reLaunch({
      url: '/visitor_pkg/pages/passport/index',
    })
  },
  // 选中日期
  onDateTimeConfirm(ev) {
    this.setData({
      visitDate: dayjs(ev.detail).format('YYYY-MM-DD'),
      dateLayerVisible: false,
    })
  },
  // 取消日期
  onDateTimeCancel() {
    this.setData({ dateLayerVisible: false })
  },
  // 选择了要维修房屋
  onHouseSelect(ev) {
    // console.log(ev);
    this.setData({
      houseId: ev.detail.id,
      houseInfo: ev.detail.name,
    })
  },
  // 提交表单
  async onSubmit() {
    /* 
    1 获取表单的字段
    2 进行表单验证
    3 发送请求 完成 新增访客
    4 提示用户 
    5 延迟一会 页面跳转 我的访客  列表页面 
     */

    const { houseId, name, gender, mobile, visitDate } = this.data
    const params = { houseId, name, gender, mobile, visitDate }
    // 开始表单的验证
    const errors = visitInfo.validate(params)
    if (errors.length) {
      return wx.utils.toast(errors[0].message)
    }
    // 发送请求 完成访客的新增
    const res = await wx.http({ url: '/visitor', method: 'post', data: params })

    if (res.code !== 10000) return wx.utils.toast(res.message)

    wx.showToast({ title: '新增访客成功' })

    setTimeout(() => {
      wx.navigateTo({
        url: '/visitor_pkg/pages/list/index',
      })
    }, 1500)
  },
})
